﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.clinica.business.BE.actdocpago;
using com.clinica.business.BE.gesliq;
using com.clinica.business.BE.comun;
using LiclUtil;
using LiclActDocPago.Views;
using System.Text;

namespace wesiGestClinica.actdocpago
{
    public partial class FormsConBandejaDocumentoPago : Shared.SMGPaseBase, ILiclBandejaDocumentoPago
    {
        private LiclBandejaDocumentoPagoPresenter oPresenter = new LiclBandejaDocumentoPagoPresenter();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                oPresenter.View = this;
                this.Master.TituloModulo = "Consulta Documentos Pago";
                CargarTipoDocumento();
                IniciarControles();
                EstablecerModos(0);
            }
            Master.OcultarMensaje();
            oPresenter.View = this;
        }
        protected override void DefineHandlers()
        {
            img_Buscar.Attributes.Add("onClick", "abrirPopupPaciente();");
            btn_Buscar.Click += new EventHandler(btn_Buscar_Click);
            dg_Liquidaciones.RowCommand += new GridViewCommandEventHandler(dg_Liquidaciones_RowCommand);
            UCBarra1.img_Nuevo.Click += new ImageClickEventHandler(img_Nuevo_Click);
        }
        #region Eventos
        void img_Nuevo_Click(object sender, ImageClickEventArgs e)
        {
            string url = "FormsManDocumentoPago.aspx?action=1&TipoLiq=&Num=";
            string script = "window.location = '" + url + "';";
            ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", script, true);
        }

        void dg_Liquidaciones_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Modificar")
            {
                string strUrl = string.Empty;
                string strScript = string.Empty;
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dg_Liquidaciones.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                if (arr[0].ToString().Trim() != "0" && arr[1].ToString().Trim() != "0")
                {
                    strUrl = "FormsManDocumentoPago.aspx?action=2&TipoLiq=" + arr[0] + "&Num=" + arr[1];
                    strScript = "window.location = '" + strUrl + "';";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", strScript, true);
                }

            }
            if (e.CommandName == "Ver")
            {
                string strUrl = string.Empty;
                string strScript = string.Empty;
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dg_Liquidaciones.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                if (arr[0].ToString().Trim() != "0" && arr[1].ToString().Trim() != "0")
                {
                    strUrl = "FormsManDocumentoPago.aspx?action=0&TipoLiq=" + arr[0] + "&Num=" + arr[1];
                    strScript = "window.location = '" + strUrl + "';";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "RedirectTo", strScript, true);
                }
            }
        }

        void btn_Buscar_Click(object sender, EventArgs e)
        {
            if (ValidarBusqueda())
            {
                DocumentoPagoBE oLiq = new DocumentoPagoBE();
                PacienteBE oPac = new PacienteBE();
                oLiq.TipoDocumentoPago = int.Parse(rbl_TipoDocumento.SelectedValue);
                oLiq.NumeroDocumento = txt_NumeroDocumento.Text.Trim();
                try
                {
                   oLiq.Numero = int.Parse(txt_Numero.Text.Trim());
                }
                catch (Exception)
                {

                }
                oPresenter.onObtener_DocumentosPago(oLiq, DateTime.Parse(UCFecDesde.Texto.Trim()), DateTime.Parse(UCFecHasta.Texto.Trim()));
            }
        }

        #endregion
        #region Metodos
        private void EstablecerModos(int modo)
        {
            switch (modo)
            {
                case 0:
                    UCBarra1.img_Nuevo.Visible = true;
                    UCBarra1.img_Volver.Visible = true;
                    break;
            }
        }
        private void CargarTipoDocumento()
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            com.clinica.business.BE.comun.ParametrosBE oParm = new com.clinica.business.BE.comun.ParametrosBE();
            oParm.NombreTabla = "TIPDOCPAG1";
            oPresenter.onObterner_Tabla(oParm);
        }
        private void IniciarControles()
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            DateTime fechaHasta = new DateTime();
            DateTime fechaDesde = new DateTime();
            fechaDesde = DateTime.Now.AddDays(-7);
            fechaHasta = DateTime.Today.ToUniversalTime();
            UCFecDesde.Texto = fechaDesde.ToString("dd/MM/yyyy");
            UCFecHasta.Texto = fechaHasta.ToString("dd/MM/yyyy");
            if (rbl_TipoDocumento.Items.Count > 0)
                rbl_TipoDocumento.Items[0].Selected = true;

            List<DocumentoPagoBE> lst = new List<DocumentoPagoBE>();
            lst.Add(new DocumentoPagoBE());
            dg_Liquidaciones.DataSource = lst;
            dg_Liquidaciones.DataBind();
        }
        private void CargarPaciente(PacienteBE oPac)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            if (oPac.NumeroDocumento.Trim() != string.Empty)
                txt_NumeroDocumento.Text = oPac.NumeroDocumento.Trim();
            if (oPac.NombreCompleto.Trim() != string.Empty)
                txt_Paciente.Text = oPac.NombreCompleto.Trim();
        }
        private bool ValidarBusqueda()
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            bool bolVal = true;
            StringBuilder strErrores = new StringBuilder();

            if (txt_Numero.Text.Trim() != string.Empty)
            {
                try
                {
                    int.Parse(txt_Numero.Text.Trim());
                }
                catch (Exception ex)
                {
                    bolVal = false;
                    Master.MostrarMensaje(" Solo ingrese caracteres numericos en Número de documento o en Valor ingresado es muy grande", TipoMensaje.Error);
                }
            }
            try
            {
                DateTime.Parse(UCFecDesde.Texto.Trim());
                DateTime.Parse(UCFecHasta.Texto.Trim());
            }
            catch (Exception ex)
            {
                bolVal = false;
                strErrores.Append(ex.Message.Trim());
            }
            if (bolVal)
            {
                if (DateTime.Compare(DateTime.Parse(UCFecDesde.Texto.Trim()), DateTime.Parse(UCFecHasta.Texto.Trim())) > 0)
                {
                    bolVal = false;
                    strErrores.Append(" La fecha hasta no puede se mayor que la fecha desde");
                }
            }
            if (!bolVal)
            {
                Master.ColocarMensaje(TipoMensaje.Error, strErrores.ToString(), strErrores.ToString());
            }
            return bolVal;
        }
        public bool HabilitarBotonesGrilla(string tipoLiq, string Estado, string Accion)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            bool val = false;
            #region habilitar
            switch (Accion)
            {
                case "1": // Editar
                    //if (tipoLiq == "2")
                    //{
                    //    if (Estado == "2" || Estado == "5" || Estado == "6")
                    //        val = true;
                    //    else
                    //        val = false;
                    //}
                    //else
                    //    val = false;
                    if (tipoLiq == "0") val = false;
                    else val = true;

                    break;
                case "2": // Anular
                    //if (Estado != "1" && tipoLiq == "2")
                    //    val = true;
                    if (tipoLiq == "0") val = false;
                    else val = true;

                    break;
                case "3": // Ver
                    //val = true;
                    if (tipoLiq == "0") val = false;
                    else val = true;

                    break;
                default:
                    break;
            }
            #endregion
            return val;
        }
        #endregion
        #region ILiclBandejaDocumentoPago Members

        public void ObtenerTabla(List<com.clinica.business.BE.comun.ParametrosBE> lst)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            rbl_TipoDocumento.DataSource = lst;
            rbl_TipoDocumento.DataValueField = "Codigo";
            rbl_TipoDocumento.DataTextField = "DescripcionCorta";
            rbl_TipoDocumento.DataBind();
        }

        public void ObtenerDocumentoPago(List<DocumentoPagoBE> lst)
        {
            /****************************************************************************************
             * Sistema    : Sistema de Gestión de Clinica
             * Modulo     : Facturación y Presupuestos
             * Descripción: 
             * Autor      : JPEREZ
             * Fecha      : 2011-06-01
             ****************************************************************************************/

            if (lst.Count > 0)
            {
                dg_Liquidaciones.DataSource = lst;
                dg_Liquidaciones.DataBind();
                lbl_Cantidad.Text = lst.Count.ToString() + " Registros(s) encontrados";
            }
            else
            {
                lst.Add(new DocumentoPagoBE());
                dg_Liquidaciones.DataSource = lst;
                dg_Liquidaciones.DataBind();
                Master.MostrarMensaje("No Existen   Documentos de pago para el criterio de busqueda", TipoMensaje.Advertencia);
                lbl_Cantidad.Text = "0 Registros(s) encontrados";
            }
        }

        public void MostrarMensajeError(string Mensaje)
        {
            Master.MostrarMensaje(Mensaje.Trim(), TipoMensaje.Error);
        }

        #endregion
    }
}
